package br.ufc.compiladores.visitors;

import br.ufc.compiladores.sintaxeabstrata.*;

public interface TypeVisitor {
	public Type visit(Program n);

	public Type visit(MainClass n);

	public Type visit(ClassDeclSimple n);

	public Type visit(ClassDeclExtends n);

	public Type visit(VarDecl n);

	public Type visit(MethodDecl n);

	public Type visit(Formal n);

	public Type visit(IntArrayType n);

	public Type visit(BooleanType n);

	public Type visit(IntegerType n);

	public Type visit(IdentifierType n);

	public Type visit(Block n);

	public Type visit(If n);

	public Type visit(While n);

	public Type visit(Print n);

	public Type visit(Assign n);

	public Type visit(ArrayAssign n);

	public Type visit(And n);

	public Type visit(LessThan n);

	public Type visit(Plus n);

	public Type visit(Minus n);

	public Type visit(Times n);

	public Type visit(ArrayLookup n);

	public Type visit(ArrayLength n);

	public Type visit(Call n);

	public Type visit(IntegerLiteral n);

	public Type visit(True n);

	public Type visit(False n);

	public Type visit(IdentifierExp n);

	public Type visit(This n);

	public Type visit(NewArray n);

	public Type visit(NewObject n);

	public Type visit(Not n);

	public Type visit(Identifier n);
}
